//package fdupc.crypto.aes;
//
//import javax.crypto.Cipher;
//import javax.crypto.spec.IvParameterSpec;
//import javax.crypto.spec.SecretKeySpec;
//import java.nio.charset.StandardCharsets;
//
///**
// * 名称: AES数据加密解密处理
// *
// * @description: 使用AES对数据进行加密解密处理
// * @author: XXSD
// * @date: 2023-06-30 17:55
// */
//public class AbstractAesCbcUtil extends AbstractAesBase {
//
//    /**
//     * 功能名称: AES数据加密解密处理
//     *
//     * @description: 构造方法
//     * @author: XXSD
//     * @date: 2023-06-30 20:48
//     */
//    protected AbstractAesCbcUtil() {
//
//    }
//
//    /**
//     * 功能名称: AES数据加密解密处理——工厂
//     *
//     * @return AES数据加密解密处理对象
//     * @description:
//     * @author: XXSD
//     * @date: 2023-06-30 20:47
//     */
//    public static AbstractAesCbcUtil factory() {
//        return new AbstractAesCbcUtil();
//    }
//
//    public static void main(String[] args) throws Exception {
//        String plaintext = "你好，世界！";
//        AbstractAesCbcUtil aesCbcEnhanceUtil = AbstractAesCbcUtil.factory();
//        // 16字节的密钥
//        String key = aesCbcEnhanceUtil.giveKeyData(32);
//        // 16字节的初始向量
//        String iv = aesCbcEnhanceUtil.giveIvData(16);
//
//        // 加密
//        String ciphertext = encryptData(plaintext, key, iv);
//        System.out.println("加密后的结果：" + ciphertext);
//
//        // 解密
//        String decryptedText = decryptData(ciphertext, key, iv);
//        System.out.println("解密后的结果：" + decryptedText);
//    }
//
//    /**
//     * 功能名称: 数据加密处理
//     *
//     * @param plaintext 加密内容
//     * @param key       秘钥
//     * @param iv        向量
//     * @return 加密后的结果
//     * @description:
//     * @author: XXSD
//     * @date: 2023-06-30 17:56
//     */
//    public String encryptData(String plaintext, String key, String iv) throws Exception {
//        Cipher cipher = giveCipher();
//        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
//        IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes(StandardCharsets.UTF_8));
//        cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
//        byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
//        return encodeBase64(encryptedBytes).trim();
//    }
//
//
//    /**
//     * 功能名称: 数据解密处理
//     *
//     * @param ciphertext 密文内容
//     * @param key        秘钥
//     * @param iv         向量
//     * @return 加密后的结果
//     * @description:
//     * @author: XXSD
//     * @date: 2023-06-30 17:56
//     */
//    public String decryptData(String ciphertext, String key, String iv) throws Exception {
//        Cipher cipher = giveCipher();
//        SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
//        IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes(StandardCharsets.UTF_8));
//        cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec);
//        byte[] decryptedBytes = cipher.doFinal(decodeBase64(ciphertext));
//        return new String(decryptedBytes, StandardCharsets.UTF_8).trim();
//    }
//}
